/* Copyright (c) 2004-2024 peigen.info. All rights reserved. */

package info.peigen.hotpot.business.customer.manage.form;

import info.peigen.hotpot.business.customer.facade.enums.CustomerLevelType;
import info.peigen.hotpot.business.customer.facade.enums.CustomerRegisterMethod;
import info.peigen.hotpot.business.customer.facade.enums.CustomerSource;
import info.peigen.hotpot.business.customer.facade.enums.CustomerStatus;
import info.peigen.hotpot.common.service.base.manage.ManageFormBase;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;
import lombok.*;
import lombok.experimental.Accessors;
import lombok.experimental.FieldDefaults;
import lombok.experimental.SuperBuilder;

/**
 * <b>(CustomerManageEditForm)</b>
 * 管理后台 修改"客户"表单
 *
 * @author Peigen
 * @version 1.0.0
 * @since 2023-09-09
 */
@EqualsAndHashCode(callSuper = true)
@SuperBuilder
@Data
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE)
@Accessors(chain = true)
public class CustomerManageEditForm extends ManageFormBase {
    /** 客户Id */
    @Size(max = 30)
    String                 customerId;
    /** 客户状态;INIT:初始化, QUICK_REGISTER:快速注册客户, UN_ACTIVATED:注册未激活, UN_CERT:未实名, CERT_PASS:已实名, NORMAL:正常客户, FREEZE:账户被冻结, UN_SUBSCRIBE:账户被注销 */
    @Size(max = 20)
    CustomerStatus         status;
    /** 客户积分 */
    @Size(max = 30)
    Long                   customerScore;
    /** 等级;Bronze:青铜,Silver:白银,Gold:黄金,Platinum:铂金,Diamond:钻石 */
    @Size(max = 20)
    CustomerLevelType      levelType;
    /** 手机号 */
    @NotEmpty
    @Size(max = 20)
    String                 mobile;
    /** 邮件 */
    @NotEmpty
    @Size(max = 100)
    String                 email;
    /** 注册方式;SELF:主动注册, SALES:销售 */
    @Size(max = 20)
    CustomerRegisterMethod customerRegisterMethod;
    /** 客户权限 */
    @NotEmpty
    String                 permission;
    /** 邀请码 */
    @NotEmpty
    @Size(max = 30)
    String                 inviteCode;
    /** 代理商 */
    @NotEmpty
    @Size(max = 30)
    String                 proxyId;
    /** 销售Id */
    @NotEmpty
    @Size(max = 30)
    String                 salesId;
    /** 客服 */
    @NotEmpty
    @Size(max = 30)
    String                 customerServiceId;
    /** 昵称 */
    @NotEmpty
    @Size(max = 100)
    String                 nickname;
    /** 头像 */
    @NotEmpty
    @Size(max = 500)
    String                 avatar;
    /** qq */
    @NotEmpty
    @Size(max = 100)
    String                 qq;
    /** 微信 */
    @NotEmpty
    @Size(max = 100)
    String                 wechat;
    /** 地址 */
    @NotEmpty
    @Size(max = 200)
    String                 address;
    /** 客户来源;INIT:初始化, B2B:B2B注册, B2C:B2C注册, EZYMONENY:EZYMONENY同步 */
    @Size(max = 20)
    CustomerSource         source;
    /** 逻辑删除标记 */
    @NotNull
    Integer                enable;
}